// pages/schedule/week/index.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    currentWeek: 1,
    weekRange: '',
    selectedDate: null,
    timeSlots: [
      '08:00-10:00',
      '10:00-12:00',
      '14:00-16:00',
      '16:00-18:00',
      '18:00-20:00',
      '20:00-22:00'
    ],
    weekdaySlots: [
      '18:00-20:00', 
      '20:00-22:00'
    ],
    weekendSlots: [
      '08:00-10:00',
      '10:00-12:00',
      '14:00-16:00',
      '16:00-18:00',
      '18:00-20:00',
      '20:00-22:00'
    ],
    // 记录每列是否显示全天
    showFullDay: [false, false, false, false, false, true, true]  // 周六周日显示全天
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    const today = new Date()
    this.setData({ selectedDate: today })
    this.updateWeekRange(today)
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },

  // 更新时间段
  updateTimeSlots() {
    const today = new Date().getDay()
    const isWeekend = today === 0 || today === 6

    this.setData({
      isWeekend,
      timeSlots: isWeekend ? this.data.weekendSlots : this.data.weekdaySlots
    })
  },

  // 更新周信息
  updateWeekRange(date) {
    // TODO: 计算周范围
    this.setData({
      weekRange: '5/1-5/7'  // 临时数据
    })
  },

  // 切换周次
  onWeekChange(e) {
    const date = new Date(e.detail.value)
    this.setData({ selectedDate: date })
    this.updateWeekRange(date)
  },

  // 点击时间格子
  onCellClick(e) {
    const { time, day } = e.currentTarget.dataset
    // 检查是否应该显示这个时间段
    if (!this.shouldShowTimeSlot(time, day)) {
      return
    }
    console.log('点击格子:', time, day)
  },

  // 判断是否应该显示该时间段
  shouldShowTimeSlot(time, day) {
    // 如果是全天显示的列，则显示所有时间
    if (this.data.showFullDay[day]) {
      return true
    }
    // 非全天显示的列，只显示晚上时间段
    const timeHour = parseInt(time.split(':')[0])
    return timeHour >= 18
  },

  // 根据日期偏移量获取目标日期
  getDateByDayOffset(date, offset) {
    const result = new Date(date)
    const day = date.getDay() || 7
    result.setDate(date.getDate() - day + 1 + offset)
    return result
  },

  // 跳转到设置页
  goToSettings() {
    wx.navigateTo({
      url: '/pages/settings/index'
    })
  }
})